Skip to content

Support LLVM/Clang 23 and test LLVM 21-23 in CI - #31

Merged
parcollet merged 5 commits into
unstablefrom
llvm-23-compat
Aug 14, 2026
Merged

Support LLVM/Clang 23 and test LLVM 21-23 in CI#31
parcollet merged 5 commits into
unstablefrom
llvm-23-compat

Conversation

@Wentzell

@Wentzell Wentzell commented Aug 6, 2026

Copy link
Copy Markdown
Member

Adds LLVM/Clang 23 support and extends the CI matrix to LLVM 21, 22 and 23.

LLVM 23 API changes

The guards keep the LLVM >= 20 support range intact.

CI matrix

Ubuntu 24.04 only ships clang-20, so LLVM 21-23 come from the versioned apt.llvm.org suites rather than llvm.sh, whose unversioned suite stops providing clang-23 once LLVM branches for release. The compiler is derived from a single matrix.llvm key so a bump cannot install one version's packages while compiling with another.

Built and tested in ubuntu:24.04 containers: LLVM 21 and 22 pass 44/44, LLVM 23 passes 38/38 (against an older c2py). noble-23 carries daily release/23.x snapshots, so that job can fail on a bad snapshot; fail-fast: false keeps it isolated.

parcollet and others added 4 commits August 6, 2026 15:10
An explicit specialization is required to carry its template argument list
"as written".
A null worked by accident until LLVM 23.
- doc_string: ASTContext::getRawCommentForDeclNoCache was generalized to
  macros and renamed to getRawCommentNoCache (llvm/llvm-project#198452)
- custom_action: DiagnosticOptions::ShowColors became a protected tri-state
  enum option reached via setShowColors (llvm/llvm-project#202441)

Co-authored-by: Olivier Parcollet <oparcollet@flatironinstitute.org>
Ubuntu 24.04 only ships clang-20, so the newer releases are installed from
the versioned apt.llvm.org suites (llvm-toolchain-noble-<N>). The llvm.sh
helper is deliberately not used: it maps 23 to the unversioned "development"
suite, which moves on to the next major version as soon as LLVM branches for
a release and would then stop providing clang-23.

The compiler is now derived from a single matrix.llvm key rather than being
repeated in cc / cxx, so a version bump can no longer install the packages of
one LLVM version while compiling with another -- which would silently test the
wrong toolchain, since clang_detection.cmake locates LLVM through the
compiler's resource dir. macos keeps explicit cc / cxx because brew's llvm
provides the unversioned clang. The ccache keys move from matrix.cc to the
same fallback so that the four ubuntu jobs do not share one cache.

Assisted-by: Claude <noreply@anthropic.com>
The macos-14 runners have long queue waits. Follow app4triqs (d14ce18) and
move to the GA macos-26 image.

Assisted-by: Claude <noreply@anthropic.com>
- actions/checkout v4 -> v7
- actions/cache/restore and /save v4 -> v6

Assisted-by: Claude <noreply@anthropic.com>
@Wentzell
Wentzell requested a review from parcollet August 7, 2026 19:01
@parcollet
parcollet merged commit aea642a into unstable Aug 14, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants